perm filename SEC3[DOC,BGB] blob sn#093413 filedate 1974-03-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	~λ15JCFASECTION 3
C00005 00003	3.1	EUCLIDEAN TRANSFORMATIONS.
C00009 00004	3.2	STRENGTHS OF TRANSFORMATION.
C00012 00005	~~F.3.3	EUCLIDEAN SWITCHES.
C00017 00006	3.4	THE ITERATION COUNTER.
C00020 ENDMK
C⊗;
~λ15;JCFASECTION 3

GEOMETRIC COMMANDS
~JAFA
   3.1	EUCLIDEAN TRANSFORMATION KEYS.

	Translation, α Rotation,  β Dilation, ε Reflection.
	";" Transform Minus X-Axis.	":" ...Plus X-Axis.	
	"(" Transform Minus Y-Axis.	")" ...Plus Y-Axis.	
	"-" Transform Minus Z-Axis.	"*" ...Plus Z-Axis.	
	"!" Translation Default.      "@" Rotation Default.

   3.2	STRENGTHS OF TRANSFORMATION.

      3.2.1	"/"	Halve a Transformation Strength.
		"\"	Double a Transformation Strength.
      3.2.2  "λ<expr>"	Set Translation Strength, TDEL.
	     "π<expr>"	Set Rotation Strength, RDEL.
	     "%<expr>"	Set Dilation Strength, DDEL.
      3.2.3  "<digit>"	Set Transform Strength Immediate.

   3.3	EUCLIDEAN SWITCHES.

      3.3.1	 "F"	Step Frame Switch Forwards.
		"βF"	Step Frame Switch Backwards.
      3.3.2	 "Q"	Toggle Frame Origin Switch.
      3.3.3	"βA"	Step Axis Counter.
      3.3.4	 "∀"	Enable All Body Motions.
		"α∀"	Disable Frame  Motion.
		"β∀"	Disable Vertex Motion.
		"ε∀"	Disable Parts  Motion.

   3.4	THE ITERATION COUNTER.

	"<digit>"	Accumulate Iteration Count.
	"<return>"	Reset Iteration Count to Zero.

   3.5	DIRECT EUCLIDEAN COMMANDS.

      3.5.1	"U"	Unmove a Body.
      3.5.2	"X PLACE <X> <Y> <Z>"
      3.5.3	"X ORIENT <PAN> <TILT> <SWING>"
3.1	EUCLIDEAN TRANSFORMATIONS.
~JA;FA
	Translation, α Rotation,  β Dilation, ε Reflection.
	";" Transform Minus X-Axis.	":" ...Plus X-Axis.	
	"(" Transform Minus Y-Axis.	")" ...Plus Y-Axis.	
	"-" Transform Minus Z-Axis.	"*" ...Plus Z-Axis.	
	"!" Translation Default.      "@" Rotation Default.

~JUF.	The  Euclidean  geometric  transformations  are  translation,
rotation, dilation and reflection. The entity in the top of the stack
is transformed by typing one of the six characters: colon, semicolon,
left parenthesis,   right parenthesis,  minus sign or  asterisk.  The
characters  colon,   left  parenthesis and  minus sign  transform the
object in the  negative direction  with respect to  the X-axis,   the
Y-axis and  the Z-axis respectively. The  characters semicolon, right
parenthesis  and  asterisk  transform  the  object  in  the  negative
direction with  respect  to the  X-axis, the  Y-axis  and the  Z-axis
respectively. The particular transformation is selected by keying the
control  bits:  none,     control,    meta  and  meta-control   which
respectively select  translation, rotation, dilation  and reflection.
Finally, the no control bits case can be forced to be rotation by the
"@" rotation default command,  or translation by  the "!" translation
default command.

	Translation  moves  the  top  entity  in  the  stack  in  the
direction specified  by  one  unit  of  translation  strength,  TDEL.
Rotation rotates the entity  about the axis specified by  one unit of
rotational  strength, RDEL. Positive rotations  are counter clockwise
and negative  rotations are  clockwise.

	Dilations  and  reflections  refer  to  a  three  axis  count
selector.  State 1  causes dilation  (reflection) to  be done  on the
specified axis,  dilation state 2 causes dilation (reflection) on the
two axes not indicated,  and  state 3 causes dilation (relfection) on
all the axes. The axis count selector is advanced by typing "βA". The
state of the selector is displayed as a digit 1,  2  or 3 just to the
right of the  dilation strength's per cent sign  in the editor status
in the upper right of the display screen.

	When the  dilation  strength,  DDEL,  is  less  than  100%  a
positive dilation  will scale  the entity  by 1/DDEL  and a  negative
dilation will scale the entity by DDEL. Positive and negative keyings
make no difference in the execution of a reflection.
3.2	STRENGTHS OF TRANSFORMATION.

3.2.1   "/"     Halve a Transformation Strength.
        "\"     Double a Transformation Strength.

	The strength of  a Euclidean transformation can be  halved or
doubled by keying  the transform's control bits and by striking slash
or back slash respectively.

3.2.2	"λ<real expression>"	Set Translation Strength, TDEL.
 	"π<real expression>"	Set Rotation Strength, RDEL.
 	"%<real expression>"	Set Dilation Strength, DDEL.

	The strengths of the Euclidean transformations can be entered
numerically  by typing  "λ",  "π" or  "%" followed  by  an arithmetic
expression of numerical constants. The simple expression  scanner can
take  "+", "-",  "*", "/"  and  parenthesis in  the usual  precedence
order;  the  scanner  also  evaluates  the  pi  character,  "π",   to
3.1415927; numbers suffixed with  the inch mark double quote  """ are
divided by twelve;  numbers suffixed with a left single quote "`" are
multiplied  by  1.745329E-2  which  converts  degrees  into radians.

3.2.3	"<digits>"	Set Transform Strength Immediate.

	The strength  of  a Euclidean  transformation can  be set  by
keying the Transform's control bits and by striking a digit from zero
to nine. Keying "ε<digit>" sets the strength of translation;  a digit
without meta-control  bits contributes to  the iteration count.   For
Translation: "ε0"  sets TDEL to 1/16 of a foot, "ε4" sets TDEL to one
Foot,  and "ε9" sets TDEL to 32 Feet.  That is  ε<digit> sets TDEL to
2.0↑(<digit>-4) feet.  For Rotation: "α9" sets RDEL to π/2, "α8" sets
RDEL to π/4, and so  on. For Dilation: "β1" sets  DDEL to 10%,   "β2"
sets DDEL to 20% and so on.
~~F.3.3	EUCLIDEAN SWITCHES.

3.3.1	 "F"	Step frame switch forwards.
 	"βF"	Step frame switch backwards.


	There are four frames of reference:  world frame, body frame,
relative frame and camera frame. The world frame is that in which all
coordinates are stored; the world  frame is the natural direct  frame
of reference,   all the other  frames are represented in  world frame
coordinates  by a frame  node which contains the  origin location and
axes orientation of secondary  frames.  In particular, each  body and
camera has a frame node,  which determine a camera or a body frame of
reference that translates and rotates when Euclidean  transformations
are applied  to that  body or camera.  The relative  frame mode is  a
catch all; when a body is in the top of the stack, its relative frame
is that of the body of which it is a part; when a face is  in the top
of the stack, its relative frame  is a special face frame with Z-axis
parallel to the face's outward pointing normal. The "F" command steps
the frame  switch selector  forwards,   "βF" steps  the frame  switch
selector  backwards.   The  state  of the  frame  switch selector  is
displayed in the status in the upper right of the display screen.

3.3.2	"Q"	Toggle Frame Origin Switch.

	Euclidean transformations  in world  frame can  be done  with
repect to  the world origin or with repect to  the origin of the body
being transformed depending on  the state of  the FRMORG switch.   In
particular, FRMORG affects world  frame rotations: FRMORG true causes
rotation  about  a world  axis thru  the  world origin;  FRMORG false
causes rotation about an axis parallel to a world  axis,  but passing
thru  the body  origin.   The  FRMORG switch  is flipped  by  the "Q"
command. The state  of FRMORG is  indicated by an  asterisked in  the
status display;  the  asterisk is  present when  FRMORG  is true  and
absent when FRMORG is false.

3.3.3	"βA"	Step Axis Counter.

	The three  state switch  named AXECNT  affects dilations  and
reflections.   State-1  indicates dilation  (reflection) only  on the
specified axis. State-2  indicates dilation  (reflection) on the  two
axes not  specified. State-3  indicates dilation (reflection)  on all
three axes. The state of the AXECNT switch is indicated by a digit to
the right  of  the dilation  strength's percent  sign  in the  status
display. AXECNT is cycled forward by the "βA" command.

3.3.4	  "∀"	Enable All Body Motions.
 	 "α∀"	Disable Frame  Motion.
 	 "β∀"	Disable Vertex Motion.
 	 "ε∀"	Disable Parts  Motion.

	A Euclidean transformation applied to  a body, means applying
the tranform  to the vertices, frame and parts  of that body. Each of
these  three  phases  of  body  transformation  can  be  individually
disabled  by the  "∀"  command with  the  appropriate conbination  of
meta-control bits.   With no meta-control bits, the ∀" command resets
all the body disable bits. Transforming a fully diabled  body is a no
operation.
3.4	THE ITERATION COUNTER.

 	"<digit>"	Accumulate Iteration Count.
 	"<return>"	Reset Iteration Count to Zero.

	Digits typed  without control  keys are  accumulated into  an
iteration  counter.   The iteration  count is  cleared by  typing a
carriage  return.    The  count  applies   to  Euclidean
transformations and sweeps. The ability  to iterate and
to  do macros  is not  developed because  of the existence  of GEOMED
imbedded  in  LISP  which  provides  better  interactive  programming
facilities than  would be possible  under the present character command
scanner. (Inspite of theoretical equivalences, it has been my  design
goal  to   keep   interactive  editing   distinct  from   interactive
programming).


3.5	DIRECT EUCLIDEAN COMMANDS.

3.5.1	"U"	Unmove a Body.

	This command applies the inverse of the given body's frame of
reference  to the body  itself.  This  has the effect  of undoing any
translations and rotations that have  been applied to the body;  that
is the body's  frame is brought back to be  coincident with the world
frame  of reference. Thus a  polyhedral body can  be constructed in a
standard orientation; then rotated randomly for  inspection; and then
be brought back to it original orientation for further editing.

3.5.2	"X PLACE <X> <Y> <Z>"

	The location of the body, camera or vertex  in the top of the
stack is placed at the given world coordinates.

3.5.3	"X ORIENT <PAN> <TILT> <S.WING>"

	The orientation  of the given  body or camera  is set  to the
specified values.